// Cookie
// HTTP 请求都是无状态的，但是我们的 Web 应用通常都需要知道发起请求的人是谁。
// 为了解决这个问题，HTTP 协议设计了一个特殊的请求头：Cookie。
// 服务端可以通过响应头（set-cookie）将少量数据响应给客户端，
// 浏览器会遵循协议将数据保存，
// 并在下次请求同一个服务的时候带上（浏览器也会遵循协议，只在访问符合 Cookie 指定规则的网站时带上对应的 Cookie 来保证安全性）。
//
// 通过 ctx.cookies，我们可以在 Controller 中便捷、安全的设置和读取 Cookie。
// Cookie 虽然在 HTTP 中只是一个头，但是通过 foo=bar;foo1=bar1; 的格式可以设置多个键值对。
//
// Cookie 在 Web 应用中经常承担了传递客户端身份信息的作用，因此有许多安全相关的配置，不可忽视，
// Cookie 文档中详细介绍了 Cookie 的用法和安全相关的配置项，可以深入阅读了解。
import { Inject, Controller, Get, Provide } from '@midwayjs/decorator';
import { Context } from '@midwayjs/koa';

@Controller('/api/controller/param/cookie')
export class HomeController {
  @Inject()
  ctx: Context;

  @Get('/getCookie')
  async getCookie() {
    // set cookie
    this.ctx.cookies.set('foo', 'bar', { encrypt: true });
    // get cookie
    this.ctx.cookies.get('foo', { encrypt: true });
    const provideStr = Provide.toString();
    console.log('provideStr:', provideStr);
  }
}
